Overall:
- some levels fail to load
  (i assume this is because the editor is supposed to ignore erroneous lines...)
- saving
- help pages/hints/tooltips/whatever
- RenderGrid and RenderTile take in window view data instead of being sent it
  when functions are being called

Level Properties:

Geometry Editor:
- select and copy/paste
- ability to view tiles
- shortcut entrance points towards any shortcut-related object (room entrance, den, scavenger hole,)
- right-click to remove selected tool
  (redundancy is good)
- OPTIMIZATION: render level in chunks, only re-render updated chunks

NOTE: shortcut entrances always have an object of type 4. (dunno why, probably some leftovers from an older impl)

Tile Editor:
- material brush size
- press E for tile/material eyedropper
- WASD tile palette navigation (emulates joar editor controls)
- draw culling

tile data format (from rwe+):
    {"tp": "tileHead", "data": ["point(C, T)", "N"]}
    C = Category ID (starting from 1) plus 2 (Stone = 3, Machinery = 15, Misc = 12)
    T = Tile index starting from 1
    N = tile name

    {"tp": "tileBody", "data": ["PT", L]}
    PT = location of the tile head plus (1, 1)
    L = layer

    {"tp": "material", "data": "N"}
    N = material name

    {"tp": "default": "data": 0}

KEYBINDS:
  General:
    Tab - Switch Layer
    Arrow Keys - Scroll
    Scroll Wheel - Zoom
    Middle Mouse Button - Pan
    1 - Toggle Level Properties
    2 - Geometry Editor
    3 - Tile Editor
  
  Geometry Editor:
    WASD - Select
    LMB - Place/Remove
    Shift+LMB - Rect Fill (Context-Specific)

  Tile Editor:
    LMB - Place Tile/Material
    RMB - Remove Tile/Material
    G+RMB - Remove Tile and Geometry
    F+LMB - Force Place
    G+LMB - Force Geometry

  Camera Editor:
    N - New Camera
    RMB/Backspace/Delete - Delete Camera/Reset Corner
    LMB - Move Camera/Corner 